Distributed systems typically comprise multiple machines, such as computers and other peripheral devices, connected in a network, such as, a Local Area Network (“LAN”), Wide Area Network (“WAN”), or the Internet. Typically, distributed systems require that computational entities (e.g., applications, programs, etc.) running in different address spaces, on different or the same platforms, be able to communicate with each other.
For a basic communication mechanism, distributed systems utilize communication between applications residing in different address spaces.
In today's Voice over IP (“VoIP”) world, an entity that wishes to initiate a call is required to obtain an IP address that is associated with the other party. Furthermore, the process associated with establishing a voice over IP call involves sending and receiving proper control messages, in which call control and presence information are exchanged. Such process of exchanging information between the two parties to the call relies on the existence of information that would allow identifying the IP address of the other party, and is the basis for establishing of calls, disconnecting calls, notifying on changes in the presence status, etc., and failure in having the proper information would prevent the conducting of the required communication session.
Also, another problem arises when such a distributed system is used for VoIP calls. This problem concerns the identification of the parties to the call. Typically, all objects that share that space may become aware that a communication session which involves an object of that domain is being established. In such a case, an object may be disguised as that object, and “intercept” the call to an undesired destination, or even become a listener to that call, where the two genuine parties are unaware of its presence in the call.